유전 알고리즘(GAs)는 자연 진화의 원리, 특히 다윈주의 '생존의 적자'와 유전적 재조합을 영감으로 삼은 확률적 전역 탐색 히어리스틱이다.
1. 표현 프레임워크
- 표준형 유전 알고리즘(이하 CGA):결정 변수를 이진수 또는 그레이 코드 문자열로 표현하여 인코딩한다.
- 실수형 유전 알고리즘(이하 RCGA):실수 벡터를 직접 조작하며, 연속 최적화 문제에서 보통 더 효율적이다.
2. 진화 루프
평가, 선택, 재생산의 반복 과정이다. 중요한 개념은 형질형 (인코딩된 비트 문자열/염색체)과 형태형 (실제 문제 공간에서 디코딩된 결정 변수 값) 사이의 구분이다.
이진 문자열에서 실수값 $x \in [a, b]$로의 매핑은 다음과 같다:
$$x = a + \frac{decimal\_value \times (b - a)}{2^L - 1}$$
여기서 $L$는 염색체의 비트 길이이다.
함밍 클리프
주의할 점은 표준 이진 코드에서 함밍 클리프가 발생하는 상황이다. 즉, 인접한 십진수(예: 7과 8)가 극적으로 다른 이진 비트 패턴을 가질 때(예:
0111대비1000)로 인해 유전 알고리즘이 국부적인 탐색을 수행하기 어렵다.
파이썬 구현: 이진 → 실수 디코딩
질문 1
왜 그레이 코드는 유전 알고리즘에서 표준 이진 코드보다 자주 선호되는가?
질문 2
변이 확률(p)이 너무 높게 설정되면(예: p=0.5), 예상되는 결과는 무엇인가요?
사례 연구: 다리 구성 요소 최적화
아래 시나리오를 읽고 질문에 답하세요.
당신은 결정 변수가 "재료 두께"인 다리 구성 요소의 설계를 최적화하고 있습니다.
- 두께는 0.0mm와 10.23mm 사이여야 합니다.
- 당신은 10비트이진 문자열 표현 방식을 사용하는 표준형 유전 알고리즘을 사용하고 있습니다.
Q
1. 만약 한 개체가 염색체
0000000000를 가지면, 디코딩된 두께는 얼마인가요?정답: 0.0mm
이진 문자열
이진 문자열
0000000000는 십진수로 0과 같다. 공식 $x = a + \frac{decimal \times (b-a)}{2^L - 1}$를 사용하면 $0.0 + \frac{0 \times (10.23 - 0.0)}{1023} = 0.0$가 된다.
Q
2. 이 10비트 설정에서 탐색 정밀도(두께의 가능한 최소 변화량)를 계산하세요.
정답: 0.01mm
정밀도는 범위를 가능한 최대 십진수 값으로 나눈 것으로 정의된다. $\frac{10.23 - 0}{2^{10} - 1} = \frac{10.23}{1023} = 0.01mm$.
정밀도는 범위를 가능한 최대 십진수 값으로 나눈 것으로 정의된다. $\frac{10.23 - 0}{2^{10} - 1} = \frac{10.23}{1023} = 0.01mm$.
Q
3. 선택 과정에서 개체 A의 적합도는 10이고, 개체 B의 적합도는 30입니다. 룰렛 휠 선택 방식을 사용할 때, B가 A보다 선택될 확률은 얼마입니까?
정답: 75%
총 적합도 = $10 + 30 = 40$. B를 선택할 확률 = $\frac{30}{40} = 0.75$ 또는 75% (3:1 비율).
총 적합도 = $10 + 30 = 40$. B를 선택할 확률 = $\frac{30}{40} = 0.75$ 또는 75% (3:1 비율).